/**
 * 时间分段显示-相对于设备当前时间
 * 小于60分钟，            显示：XX分钟前；
 * 1小时到24小时之内，      显示：：xx小时前
 * 24小时以上到48小时之内， 显示：1天前
 * 48小时以上到72小时之内， 显示：2天前
 * 72小时以上到96小时之内， 显示：3天前
 * 96小时以上到一年前，     显示：XX月XX日；//(达到4天的) 同年，不同年显示下面的
 * 一年以上，              显示：XXXX年XX月XX日
 */
function formatTime (date) {
  if (!date) return ''
  let nowDate = new Date()
  // date = date.toString()
  // date = date.replace(/-/g, '/')
  date = new Date(date)
  let intervalTime = nowDate - date
  let intervalTimeDate = new Date(intervalTime)
  if (intervalTime < (60 * 1000)) { // XX分钟前
    return '刚刚'
  } else if ((60 * 1000) <= intervalTime && intervalTime < (60 * 60 * 1000)) {
    return intervalTimeDate.getMinutes() + '分钟前'
  } else if ((60 * 60 * 1000) <= intervalTime && intervalTime < (24 * 60 * 60 * 1000)) { // xx小时前
    return `${Math.floor(intervalTimeDate / 1000 / 60 / 60)}小时前`
  } else if ((24 * 60 * 60 * 1000) <= intervalTime && intervalTime < (4 * 24 * 60 * 60 * 1000)) { // 1-3天前
    return `${Math.floor(intervalTimeDate / 1000 / 60 / 60 / 24)}天前`
  } else if ((4 * 24 * 60 * 60 * 1000) <= intervalTime) { // XX月XX日
    if (date.getFullYear() === nowDate.getFullYear()) {
      return `${date.getMonth() + 1}月${date.getDate()}日`
    } else { // XXXX年XX月XX日
      return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日`
    }
  } else {
    return '请准确的设置系统时间'
  }
}

/**
 * 格式化时间 xxxx年xx月xx日 HH：mm
 */
function formatDate (date) {
  if (!date) return ''
  date = new Date(date)
  let obj = {
    'y': date.getFullYear(), // 年份，注意必须用getFullYear
    'M': date.getMonth() + 1, // 月份，注意是从0-11
    'd': date.getDate(), // 日期
    'q': Math.floor((date.getMonth() + 3) / 3), // 季度
    'w': date.getDay(), // 星期，注意是0-6
    'H': date.getHours() < 10 ? '0' + date.getHours() : date.getHours(), // 24小时制
    'h': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
    'm': date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(), // 分钟
    's': date.getSeconds(), // 秒
    'S': date.getMilliseconds() // 毫秒
  }
  return `${obj.y}年${obj.M}月${obj.d}日 ${obj.H}:${obj.m}`
}

export default {
  formatTime,
  formatDate
}
